package com.digicom.common.entity;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

/**
 * 用户实体类
 */
@Data
@TableName("dg_user")
public class User implements Serializable {
    private static final long serialVersionUID = 1L;

    /** 用户ID */
    @TableId(value = "user_id", type = IdType.AUTO)
    private Long userId;

    /** 用户账号 */
    private String username;

    /** 密码 */
    @JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
    private String password;

    /** 用户昵称 */
    private String nickname;

    /** 用户类型（00系统用户 01普通用户） */
    private String userType;

    /** 用户邮箱 */
    private String email;

    /** 手机号码 */
    private String phonenumber;
    
    /** 手机号码（别名，兼容性用） */
    @TableField(exist = false)
    private String mobile;

    /** 微信openId */
    private String wxOpenId;

    /** 用户性别（0男 1女 2未知） */
    private String sex;

    /** 头像地址 */
    private String avatar;

    /** 帐号状态（0正常 1停用） */
    private String status;

    /** 最后登录IP */
    private String loginIp;

    /** 最后登录时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date loginDate;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createTime;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

    /** 备注 */
    private String remark;

    /** 删除标志（0代表存在 1代表删除） */
    @TableLogic
    private String delFlag;
    
    /**
     * 获取手机号码（兼容性方法）
     */
    public String getMobile() {
        return this.phonenumber;
    }
    
    /**
     * 设置手机号码（兼容性方法）
     */
    public void setMobile(String mobile) {
        this.phonenumber = mobile;
        this.mobile = mobile;
    }
} 